package com.itheima.stock.config;

import com.itheima.stock.common.domain.StockInfoConfig;
import com.itheima.stock.utils.IdWorker;
import com.itheima.stock.utils.ParserStockInfoUtil;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 定义公共配置bean
 */
//既然是配置类就使用@Configuration
@Configuration
@EnableConfigurationProperties(StockInfoConfig.class)//让这个类作为一个bean被ioc管理
public class CommonConfig {

    /**
     * 定义密码加密和解密器
     * @return
     */
    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }

    /**
     * 配置id生成器，保证分布式下id的唯一
     * @return
     */
    @Bean
    public IdWorker idWorker(){
        /**
         * 参数1：指定极其id的序列号       --（一般都是运维人员编号）
         * 参数2：指定机房id的序列号
         */
        IdWorker idWorker = new IdWorker(1L, 2L);
        return idWorker;
    }

    @Bean
    public ParserStockInfoUtil parserStockInfoUtil(IdWorker idWorker){
        ParserStockInfoUtil stockInfoUtil = new ParserStockInfoUtil(idWorker);
        return stockInfoUtil;
    }

}
